Hi, there's our 2Coders fundings:We've been facing the same issue for a week until we realise that even when the doc says "An optional string value that you define; may be an empty string. The app can provide this value and uses it in applicationUsername.", the validation result for the signature fails on the Store side.
Quick Conclusion: What we're doing now is sending a value from the app side.const payload = appBundleID + '\u2063' +
keyID + '\u2063' +
productIdentifier + '\u2063' +
subscriptionOfferID + '\u2063' +
applicationUsername + '\u2063'+
nonce + '\u2063' +
timestamp;If you consider sending "applicationUsername" var as an empty string or as a null value it will add a double \u2063 (invisible separator). Which in our findings produce a signature that won't mathes with the expected result on the Apple Stores side. Could be because then they separate the values based on this invisible separator.Ofc. the doc says the lengh max (UINT32_MAX)Relevant docs:Application username doc:https://developer.apple.com/documentation/storekit/skmutablepayment/1506088-applicationusernameGenerating signatureshttps://developer.apple.com/documentation/storekit/in-app_purchase/subscriptions_and_offers/generating_a_signature_for_subscription_offers